/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model.dao;

import lib.*;
import model.dao.vo.*;

import java.util.*;
import java.sql.*;

/**
 *
 * @author felipe
 */
public class DiretorDAO extends DAO {

    public DiretorDAO()
    {
        super();
    }

    public Iterator<DiretorVO> listaDiretor(DiretorVO diretor)
    {
        SQL sql = Factory.createSQL();
        sql = sql.select("diretor_id, pessoa_id")
                .from("diretor")
                .where("diretor_id LIKE '%" + diretor.getId() + "%'");
        ResultSet rs = this.db.Execute(sql.toString());
        try
        {
            if ( ! rs.wasNull() )
            {
                List<DiretorVO> diretores = new ArrayList<DiretorVO>();
                while(rs.next())
                {
                    DiretorVO d = new DiretorVO();
                    d.setDiretorId(rs.getInt("diretor_id"));
                    d.setId(rs.getInt("pessoa_id"));
                    d.setNome(rs.getString("pessoa_nome"));
                    diretores.add(d);
                }

                if ( ! diretores.isEmpty()){
                    return (Iterator<DiretorVO>) diretores.iterator();
                }
            }
        }
        catch( SQLException e )
        {
            ErrorLog.SQLLog("Error listaCategoria method " , e);
        }
        return null;
    }

    public DiretorVO buscaDiretor(DiretorVO diretor)
    {
        SQL sql = Factory.createSQL();
        sql = sql.select("diretor_id")
                .from("diretor")
                .where("diretor_id = " + diretor.getId());
        ResultSet rs = this.db.Execute(sql.toString());
        try
        {
            if ( ! rs.wasNull() )
            {
                diretor.setId(rs.getInt("exibicao_id"));
                diretor.setId(1);
                diretor.setNome("");
                return diretor;
            }
        }
        catch( SQLException e )
        {
            ErrorLog.SQLLog("Error Main method " , e);
        }
        return null;
    }

    public boolean insereDiretor(DiretorVO diretor)
    {
        //inserir pessoa
        SQL sql = Factory.createSQL();
        sql = sql.insert()
                .into("diretor", "diretor_id, pessoa_id")
                .value("NULL, " + diretor.getId());
        int sucess = this.db.Update(sql.toString());
        if (sucess == 1)
        {
            return true;
        }
        return false;
    }

    public boolean alteraDiretor(DiretorVO diretor)
    {
        //inserir pessoa
        SQL sql = Factory.createSQL();
        sql = sql.update("diretor")
                .set("pessoa_id = " + diretor.getId())
                .where("diretor_id = " + diretor.getDiretorId());
        int sucess = this.db.Update(sql.toString());
        if (sucess == 1)
        {
            return true;
        }
        return false;
    }

    public boolean apagaDiretor(DiretorVO diretor)
    {
        //inserir pessoa
        SQL sql = Factory.createSQL();
        sql = sql.delete("diretor")
                .where("diretor_id = " + diretor.getDiretorId());
        int sucess = this.db.Update(sql.toString());
        if (sucess == 1)
        {
            return true;
        }
        return false;
    }


}
